package cn.tedu.map;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/*本类用来测试collection接口相关API*/
public class TestCollection {
    @Test
    public void test() {
        Collection<Integer> c = new <Integer>ArrayList();
        /*1、Integer是泛型，用来约束集合中存储数据的类型
         * 泛型中的Type只能是引用数据类型不能是基本数据类型*/
        c.add(100);
        c.add(200);
        c.add(300);
        c.add(400);
        c.add(500);
        System.out.println(c);
        ArrayList<Integer> objects1 = new ArrayList<>();
        objects1.add(1);
        System.out.println(c.retainAll(objects1)+"*******");//没有交集返回true
        System.out.println(c);//空
        //获取c集合的迭代器
        Iterator<Integer> iterator = c.iterator();
        //hasNext()表示是否到达集合的最大下标 返回值为boolean类型
        while (iterator.hasNext()){
            //返回当前下标的元素
            System.out.println(iterator.next());
        }
     /*   for (;iterator.hasNext(); ) {
            System.out.println(iterator.next());
        }*/
   /* c.clear();//清除集合中的元素
    System.out.println(c);*/
        System.out.println(c.contains(500));//判断是否包含500
        System.out.println(c.hashCode());//打印当前对象的哈希值
        System.out.println(c.isEmpty());//判断当前集合是否为空
        System.out.println(c.remove(300));//删除集合中的指定元素首次出现的
        System.out.println(c);
        System.out.println(c.size());//集合中元素个数
        System.out.println(c.equals(200));//false 集合对象与Integer200不相等
        Object[] objects = c.toArray();//集合改为数组
        System.out.println(Arrays.toString(objects));
        System.out.println(c.equals(objects));//false


        Collection c2 = new ArrayList();
        c2.add(2);
        c2.add(3);
        c2.add(4);
        c2.add(5);
        System.out.println(c2);
        System.out.println(c.addAll(c2));//将集合二添加进入集合一 返回值为boolean类型
        System.out.println(c);
        System.out.println(c.containsAll(c2));//判断集合c是否包含集合c2中的所有元素 返回值为boolean类型
        System.out.println(c.retainAll(c2)+"***");//取两个集合之间的交集
        c.removeAll(c2);//返回c集合中属于c2集合中的元素
        System.out.println(c);
        //遍历迭代集合中的元素
        /*1.如果想要遍历迭代集合的话，要获取集合中的迭代器
        * 2.判断集合是否有下个元素
        * 3.获取到当前迭代到的元素
        * */

    }
}
